home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 005 / budget.arc / CRITICAL.BAS (.txt) < prev    next >
Encoding:
GW-BASIC  |  1985-06-26  |  2.1 KB  |  88 lines

  1. 10  REM  CRITICAL PATH METHOD (CPM)
  2. 20  REM  A()=START AND END NODES FOR EACH ACTIVITY
  3. 30  REM  S()=EARLY START TIMES FOR EACH ACTIVITY
  4. 40  REM  F()=LATE FINISH TIMES FOR EACH ACTIVITY
  5. 50  REM  E()=DURATIONS AND COSTS OF NORMAL ACTIVITIES
  6. 60  REM  C()=DURATIONS AND COSTS OF CRASH ACTIVITIES
  7. 70  CLS
  8. 80  KEY OFF
  9. 90  DIM A(100,2),S(100),F(100),E(100,2),C(100,2)
  10. 100  PRINT "CRITICAL PATH METHOD"
  11. 110  PRINT
  12. 120  PRINT "HOW MANY ACTIVITIES IN THIS NETWORK";
  13. 130  INPUT N
  14. 140  FOR I=1 TO N
  15. 150  PRINT
  16. 160  PRINT USING " ENTER START, END NODES FOR ACTIVITY ##"; I;
  17. 170  INPUT A(I,1),A(I,2)
  18. 180  IF A(I,2)<=A(I,1) THEN 200
  19. 190  IF A(I,2)<N THEN 250
  20. 200  PRINT " START NODE MUST BE NUMBERED LOWER";
  21. 210  PRINT " THAN END NODE, AND END NODE MUST";
  22. 220  PRINT " BE LESS THAN THE NUMBER OF ACTIVITIES.";
  23. 230  PRINT "       *** TRY ENTRY AGAIN ***"
  24. 240  GOTO 150
  25. 250  PRINT SPC(16)"ENTER DURATION AND COST";
  26. 260  INPUT E(I,1),E(I,2)
  27. 270  S(I)=0
  28. 280  F(I)=0
  29. 290  NEXT I
  30. 300  REM  LOOP TO FIND EARLY START TIMES FOR NETWORK
  31. 310  FOR I=1 TO N
  32. 320  IF S(A(I,2))>=S(A(I,1))+E(I,1) THEN 340
  33. 330  S(A(I,2))=S(A(I,1))+E(I,1)
  34. 340  NEXT I
  35. 350  F(A(N,2))=S(A(N,2))
  36. 360  REM  LOOP TO CALCULATE LATE FINISH TIMES FOR NETWORK
  37. 370  FOR I=N TO 1 STEP -1
  38. 380  IF F(A(I,1))=0 THEN 410
  39. 390  IF F(A(I,1))>F(A(I,2))-E(I,1) THEN 410
  40. 400  GOTO 420
  41. 410  F(A(I,1))=F(A(I,2))-E(I,1)
  42. 420  NEXT I
  43. 430  C1=0
  44. 440  L=0
  45. 450  PRINT
  46. 460  REM  CALCULATE SLACK TIME IN S1
  47. 470  PRINT "START END  EARLY  LATE"
  48. 480  PRINT "NODE  NODE START FINISH DUR. SLACK COST"
  49. 490  FOR I=1 TO N
  50. 500  PRINT A(I,1);TAB(7);A(I,2);TAB(12);S(A(I,1));TAB(18);
  51. 510  PRINT F(A(I,2));TAB(25);E(I,1);TAB(30);
  52. 520  S1=F(A(I,2))-S(A(I,1))-E(I,1)
  53. 530  IF S1>0 THEN 580
  54. 540  IF L>=F(A(I,2)) THEN 580
  55. 550  PRINT "CRIT.";
  56. 560  L=L+E(I,1)
  57. 570  GOTO 590
  58. 580  PRINT S1;
  59. 590  PRINT TAB(36);E(I,2)
  60. 600  C1=C1+E(I,2)
  61. 610  NEXT I
  62. 620  PRINT
  63. 630  PRINT "THE CRITICAL PATH LENGTH IS ";L
  64. 640  PRINT "TOTAL COST OF THIS NETWORK= ";C1
  65. 650  PRINT
  66. 660  PRINT "DO YOU WANT TO CHANGE ANY";
  67. 670  PRINT " ACTIVITY DURATIONS (Y/N)";
  68. 680  INPUT A$
  69. 690  IF A$="N" OR A$="n" THEN 870
  70. 700  IF A$<>"Y" AND A$<>"y" THEN 650
  71. 710  PRINT
  72. 720  PRINT "WHICH ACTIVITY ";
  73. 730  INPUT I
  74. 740  IF I<1 THEN 710
  75. 750  IF I>N THEN 710
  76. 760  PRINT "CURRENT DURATION IS ";E(I,1)
  77. 770  PRINT "COST = ";E(I,2)
  78. 780  PRINT "ENTER NEW DURATION AND COST ";
  79. 790  INPUT E(I,1),E(I,2)
  80. 800  PRINT "-----RECALCULATION NETWORK-----"
  81. 810  PRINT
  82. 820  FOR I=1 TO N
  83. 830  S(I)=0
  84. 840  F(I)=0
  85. 850  NEXT I
  86. 860  GOTO 300
  87. 870  END
  88.